home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib15.dsk
/
PRINT FORMATTER.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
2KB
|
53 lines
10 REM **********************
11 REM * PRINT FORMATTER *
12 REM * BY R. SCOTT SMITH *
13 REM * COPYRIGHT (C) 1983 *
14 REM * BY MICROSPARC, INC *
15 REM * LINCOLN, MA. 01773 *
16 REM **********************
20 REM MC= MAXIMUM NO. OF COLUMNS OF PRINTER MODE
30 REM NC= NO. OF COLUMNS TO BE PRINTED
40 REM SP= SPACE BETWEEN ENTRIES
50 REM SP= 0 NORMAL PRINT
60 REM SP= -1 APPENDS ENTRIES TOGETHER IN ONE PARAGRAPH
70 REM SP= N PUTS N BLANK LINES BETWEEN ENTRIES
80 REM RJ > 0 FOR RIGHT JUSTIFICATION
90 REM
99 GOTO 1000: REM START OF PROGRAM
100 REM PRINT FORMATTER SUB-ROUTINE
110 IF NC = 0 THEN NC = 40:MC = 40
120 IF MC <NC THEN MC = MC +40: GOTO 120
130 LM = INT((MC -NC)/2) +1
140 IF RIGHT$(A$,1) < >" " THEN A$ = A$ +" "
150 IF RIGHT$(A$,2) = ". " OR RIGHT$(A$,2) = "? " OR RIGHT$(A$,2) = "! " THEN A$ = A$ +" "
160 X = LEN(X$): IF LEN(A$) >250 -X THEN X$ = X$ + LEFT$(A$,250 -X): GOSUB 220:X$ = X$ + MID$ (A$,251 -X)
170 IF A$ = " " THEN GOSUB 400: GOTO 190
180 X$ = X$ +A$: GOTO 220
190 S1 = SP +1
200 IF S1 >0 THEN GOSUB 400:S1 = S1 -1: GOTO 200
210 RETURN
220 REM FIND BLANK
230 IF LEFT$(X$,1) = " " AND LEFT$(X$,3) < >" " THEN X$ = MID$ (X$,2): GOTO 230
240 IF LEN(X$) <NC THEN 190
250 Y$ = X$
260 FOR L1 = NC +1 TO 1 STEP -1: IF MID$ (Y$,L1,1) = " " THEN 280
270 NEXT :L1 = NC +1
280 X$ = LEFT$(Y$,L1 -1): GOSUB 300: IF L1 >0 THEN X$ = MID$ (Y$,L1)
290 GOTO 230
300 REM RIGHT JUSTIFY
310 IF NOT RJ THEN 400
320 RM = NC +1 -L1:J1 = L1
330 IF RIGHT$(X$,1) = " " THEN X$ = LEFT$(X$, LEN(X$) -1):RM = RM +1:J1 = J1 -1: GOTO 330
340 IF RM <1 THEN 400
350 FOR J2 = 1 TO J1: IF MID$ (X$,J2,1) < >" " THEN 370
360 NEXT : GOTO 400
370 FOR J3 = J1 TO J2 STEP -1: IF RM <1 THEN 400
380 IF MID$ (X$,J3,1) = " " THEN X$ = LEFT$(X$,J3) + MID$ (X$,J3):RM = RM -1
390 NEXT : IF RM >0 THEN 370
400 REM PRINT OUT
410 IF S1 -1 = SP AND X$ = "" THEN RETURN
420 HTAB LM: PRINT X$;
430 IF LEN(X$) < >MC THEN PRINT
440 REM PUT "PRINT" HERE FOR DOUBLE SPACING
450 X$ = "": RETURN
460 REM END OF LISTING #1